diff --git a/addons21/FastWQ.py b/addons21/FastWQ.py deleted file mode 100644 index 5b86821..0000000 --- a/addons21/FastWQ.py +++ /dev/null @@ -1,43 +0,0 @@ -#-*- coding:utf-8 -*- -# -# Copyright (C) 2018 sthoo -# -# 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 . - -from anki.hooks import addHook - -############## other config here ################## -shortcut = 'Ctrl+Q' -LDOCE6_PATH = u'D:\\mdx_server\\mdx\\LDOCE6.mdx' -################################################### - -def start_here(): - - """ - Copyright (C) 2018 sthoo - Support: Report an issue at https://github.com/sth2018/FastWordQuery/issues - """ - - import fastwq - - fastwq.config.read() - if not fastwq.have_setup: - fastwq.config_menu() - fastwq.browser_menu() - fastwq.customize_addcards() - fastwq.window_shortcut(shortcut) - -addHook("profileLoaded", start_here) diff --git a/addons21/fastwq/__init__.py b/addons21/fastwq/__init__.py index 4baea8d..4fd8d9e 100644 --- a/addons21/fastwq/__init__.py +++ b/addons21/fastwq/__init__.py @@ -17,109 +17,24 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -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 .gui import show_options, show_about_dialog -from .query import query_from_browser, query_from_editor_all_fields -from .context import config, APP_ICON -from .lang import _ +from anki.hooks import addHook +from . import common as fastwq +from .context import config -__all__ = [ - 'add_query_button', 'browser_menu', - 'customize_addcards', 'config_menu', - 'window_shortcut' -] +############## other config here ################## +shortcut = 'Ctrl+Q' +LDOCE6_PATH = u'D:\\mdx_server\\mdx\\LDOCE6.mdx' +################################################### -have_setup = False -my_shortcut = '' +def start_here(): + config.read() + config.LDOCE6_PATH = LDOCE6_PATH + if not fastwq.have_setup: + fastwq.config_menu() + fastwq.browser_menu() + fastwq.customize_addcards() + fastwq.window_shortcut(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 - """ - def on_setup_menus(browser): - """ - on browser setupMenus was called - """ - # main menu - menu = QMenu("FastWQ", browser.form.menubar) - browser.form.menubar.addMenu(menu) - # Query Selected - action = QAction("Query Selected", browser) - action.triggered.connect(wrap_method(query_from_browser, browser)) - action.setShortcut(QKeySequence(my_shortcut)) - menu.addAction(action) - # Options - action = QAction("Options", browser) - 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) - menu.addAction(action) - # About - action = QAction("About", browser) - action.triggered.connect(wrap_method(show_about_dialog, browser)) - menu.addAction(action) - - addHook('browser.setupMenus', on_setup_menus) - - -def customize_addcards(): - """ - add button to addcards window - """ - AddCards.setupButtons = wrap( - AddCards.setupButtons, add_query_button, "before") - - -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) - global have_setup - have_setup = True - - -def window_shortcut(key_sequence): - """ - setup shortcut - """ - global my_shortcut - my_shortcut = key_sequence - +addHook("profileLoaded", start_here) \ No newline at end of file diff --git a/addons21/fastwq/common.py b/addons21/fastwq/common.py new file mode 100644 index 0000000..4baea8d --- /dev/null +++ b/addons21/fastwq/common.py @@ -0,0 +1,125 @@ +#-*- coding:utf-8 -*- +# +# Copyright (C) 2018 sthoo +# +# 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 . + +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 .gui import show_options, show_about_dialog +from .query import query_from_browser, query_from_editor_all_fields +from .context import config, APP_ICON +from .lang import _ + + +__all__ = [ + 'add_query_button', 'browser_menu', + 'customize_addcards', 'config_menu', + 'window_shortcut' +] + + +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 + """ + def on_setup_menus(browser): + """ + on browser setupMenus was called + """ + # main menu + menu = QMenu("FastWQ", browser.form.menubar) + browser.form.menubar.addMenu(menu) + # Query Selected + action = QAction("Query Selected", browser) + action.triggered.connect(wrap_method(query_from_browser, browser)) + action.setShortcut(QKeySequence(my_shortcut)) + menu.addAction(action) + # Options + action = QAction("Options", browser) + 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) + menu.addAction(action) + # About + action = QAction("About", browser) + action.triggered.connect(wrap_method(show_about_dialog, browser)) + menu.addAction(action) + + addHook('browser.setupMenus', on_setup_menus) + + +def customize_addcards(): + """ + add button to addcards window + """ + AddCards.setupButtons = wrap( + AddCards.setupButtons, add_query_button, "before") + + +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) + global have_setup + have_setup = True + + +def window_shortcut(key_sequence): + """ + setup shortcut + """ + global my_shortcut + my_shortcut = key_sequence + diff --git a/addons21/fastwq/context.py b/addons21/fastwq/context.py index 1220aa6..3257421 100644 --- a/addons21/fastwq/context.py +++ b/addons21/fastwq/context.py @@ -36,6 +36,7 @@ class Config(object): """ _CONFIG_FILENAME = '.fastwqcfg.json' #Config File Path + LDOCE6_PATH = '' def __init__(self, window): self.path = self._CONFIG_FILENAME diff --git a/addons21/fastwq/service/dict/LDOCE6.py b/addons21/fastwq/service/dict/LDOCE6.py index dd505d1..9adcef2 100644 --- a/addons21/fastwq/service/dict/LDOCE6.py +++ b/addons21/fastwq/service/dict/LDOCE6.py @@ -1,9 +1,8 @@ #-*- coding:utf-8 -*- import re -import FastWQ from ..base import * +from ...context import config -PATH = FastWQ.LDOCE6_PATH VOICE_PATTERN = r'' MAPPINGS = [ @@ -17,7 +16,7 @@ LANG_TO_REGEXPS = {lang: regexps for lang, regexps in MAPPINGS} class Ldoce6(MdxService): def __init__(self): - super(Ldoce6, self).__init__(PATH) + super(Ldoce6, self).__init__(config.LDOCE6_PATH) @property def title(self):