diff --git a/addons/fastwq/__init__.py b/addons/fastwq/__init__.py index 6b98863..674a8e6 100644 --- a/addons/fastwq/__init__.py +++ b/addons/fastwq/__init__.py @@ -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) diff --git a/addons21/fastwq/common.py b/addons21/fastwq/common.py index 15cda3c..674a8e6 100644 --- a/addons21/fastwq/common.py +++ b/addons21/fastwq/common.py @@ -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)